package cc.rengu.igas.share.facade.bean.cups;

import cc.rengu.oltp.service.common.enums.OltpRpcdEnum;
import cc.rengu.oltp.service.model.BizException;

import java.util.Arrays;

/**
 * F60.2.3  Chip Condition Code： IC 卡条件代码
 *
 * @author fangminwei
 * @date 2021/4/17
 */
@SuppressWarnings("AlibabaEnumConstantsMustHaveComment")
public enum F60_2_3_ChipConditionCodeEnum {
    _0("0", "未使用或后续子域存在"),
    _1("1", "终端对卡片的上一次读取动作发现不是IC卡交易或者发现是一笔成功的IC卡交易。" +
            "填1，表示不插卡，直接刷卡的行为。这种行为是一种不规范的操作行为。"),
    _2("2", "终端对卡片的上一次读取动作发现交易虽是IC卡交易但失败。" +
            "例如，持卡人拿IC卡来做交易，但插IC卡以后，终端无法读取应用，改为刷卡，" +
            "那么这笔刷卡交易对应的上一次读取，就是开始读IC卡芯片失败的那次读取，因为IC卡芯片读取失败，" +
            "所以是一个失败的IC卡交易，此时该域应该填2填2，表示当终端或卡片有问题时，IC卡交易为降级处理。"),
    ;

    private String code;
    private String desc;

    F60_2_3_ChipConditionCodeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return code + "-" + desc;
    }

    public static F60_2_3_ChipConditionCodeEnum find(String code) {
        F60_2_3_ChipConditionCodeEnum result = Arrays.stream(F60_2_3_ChipConditionCodeEnum.values())
                .filter(e -> e.getCode().equals(code)).findFirst().orElse(null);

        if (result == null) {
            throw new BizException(OltpRpcdEnum.PARAM_IS_EMPTY_OR_NULL.getRespCode(), "找不到对应的枚举信息" + code);
        }
        return result;
    }
}
